namespace DeclarativeTest.Core
{
    /// <summary>
    /// This interface abstracts creation of actions
    /// </summary>
    public interface IActionFactory
    {
        /// <summary>
        /// Determines whether the factory can create action.
        /// </summary>
        /// <param name="actionInfo">ActionInfo</param>
        /// <returns>true is factory can create action</returns>
        bool CanCreateAction( ActionInfo actionInfo );

        /// <summary>
		/// Creates action by <see cref="ActionInfo"/>
		/// </summary>
		/// <param name="testCase">Parent <see cref="ITestCase"/></param>
		/// <param name="actionInfo">ActionInfo</param>
		/// <returns>An instance of <see cref="IAction"/></returns>
        IAction CreateAction( IDataProvider testCase, ActionInfo actionInfo );
    }
}